<!DOCTYPE HTML>
<html>
<head>
<title>SendMode | AutoHotkey</title>
<meta name="description" content="The SendMode command causes Send, Click, MouseMove, MouseClick and MouseClickDrag to use the Input or Play mode rather than the default (Event)." />
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>SendMode <span class="ver">[v1.0.43+]</span></h1>

<p>让 <a href="Send.htm">Send</a> 和 SendInput 或 SendPlay 具有相同的功能而不是默认的(SendEvent). 也使 Click 和 MouseMove/Click/Drag 使用指定的方法.</p>

<pre class="Syntax"><span class="func">SendMode</span> Mode</pre>

<h2>参数</h2>
<dl>
  <dt>Mode</dt>
  <dd><p>指定以下单词之一:</p>
  <p><strong>Event</strong>: 这是所有脚本开始时默认使用的. 它让 <a href="Send.htm">Send</a>, <a href="Send.htm">SendRaw</a>, <a href="Click.htm">Click</a> 和 <a href="MouseMove.htm">MouseMove</a>/<a href="MouseClick.htm">Click</a>/<a href="MouseClickDrag.htm">Drag</a> 使用 <a href="Send.htm#SendEvent">SendEvent</a> 模式.</p>
  <p><strong>Input</strong>: 让 <a href="Send.htm">Send</a>, <a href="Send.htm">SendRaw</a>, <a href="Click.htm">Click</a> 和 <a href="MouseMove.htm">MouseMove</a>/<a href="MouseClick.htm">Click</a>/<a href="MouseClickDrag.htm">Drag</a> 切换到 <a href="Send.htm#SendInput">SendInput</a> 方法.<br>已知限制:</p>
  <ul>
    <li>Windows 资源管理器会忽略 SendInput 模拟的某些导航的热键, 例如 <kbd>Alt</kbd>+<kbd>&larr;</kbd>. 要变通解决此问题, 请使用 <code>SendEvent !{Left}</code> 或 <code>SendInput {Backspace}</code>.</li>
  </ul>
  <p><strong>InputThenPlay</strong> <span class="ver">[v1.0.43.02+]:</span> 与上面相同, 不过当 SendInput <a href="Send.htm#SendInputUnavail">不可用</a>时恢复为下面的 Play 模式而不是退回到 Event 模式. 这也会使得 <a href="Send.htm#SendInput">SendInput 命令</a>自身在 SendInput 不可用时恢复到 Play 模式.</p>
  <p id="Play"><strong>Play</strong>: 让 <a href="Send.htm">Send</a>, <a href="Send.htm">SendRaw</a>, <a href="Click.htm">Click</a> 和 <a href="MouseMove.htm">MouseMove</a>/<a href="MouseClick.htm">Click</a>/<a href="MouseClickDrag.htm">Drag</a> 切换到 <a href="Send.htm#SendPlay">SendPlay</a> 方法.<br>
  已知限制:</p>
  <ul>
    <li>不能发送在当前键盘布局上不存在的字符(例如英语中的 &Ocirc;). 要变通解决此问题, 请使用 <a href="Send.htm#SendEvent">SendEvent</a>.</li>
    <li>在 RichEdit 控件(可能还有其他的) 例如 WordPad 和 Metapad, 模拟鼠标拖动可能没有效果. 要为特殊的拖动使用替换模式, 请参照此例: <code><a href="Send.htm#SendEvent">SendEvent</a> {Click 6, 52, down}{Click 45, 52, up}</code>.</li>
    <li>模拟鼠标滚轮的滚动只进行一个方向上的移动(通常是向下, 但在一些程序中可能是向上). 此外, 滚轮的滚动在类似 MS Word 和 Notepad 的程序中可能没有效果. 要为特殊的滚动使用替换模式, 请参照此例: <code><a href="Send.htm#SendEvent">SendEvent</a> {WheelDown 5}</code>.</li>
    <li>当在自动执行段(脚本的顶部) 使用 <code>SendMode Play</code> 时, 会影响所有的重映射按键并可能失去它们的某些功能. 请参阅 <a href="../misc/Remap.htm#SendPlay">SendPlay 的重映射限制</a>了解详情.</li>
    <li>SendPlay 不会触发 AutoHotkey 的热键或热字串及由操作系统或其他程序注册的全局热键.</li>
  </ul></dd>
</dl>

<h2>备注</h2>
<p>由于 SendMode 也改变了 <a href="Click.htm">Click</a> 和 <a href="MouseMove.htm">MouseMove</a>/<a href="MouseClick.htm">Click</a>/<a href="MouseClickDrag.htm">Drag</a> 的模式, 所以您有机会为特殊的鼠标事件使用不同的模式. 实现这种操作最便捷的方法是使用 <a href="Send.htm#Click">{Click}</a>. 例如:</p>
<pre>SendEvent {Click 100, 200}  <em>; SendEvent 使用更老更传统的方法进行点击.</em></pre>
<p>如果在自动执行段(脚本的顶部) 使用了 SendMode, 那么它还会影响<a href="misc/Remap.htm">键盘和鼠标重映射</a>. 尤其是您在重映射时使用了 <code>SendMode Play</code>, 请参阅 <a href="../misc/Remap.htm#SendPlay">SendPlay 的重映射限制</a>.</p>
<p><span class="ver">[v1.1.23+]:</span> 内置变量 <strong>A_SendMode</strong> 包含当前的设置.</p>
<p>每个新运行的<a href="../misc/Threads.htm">线程</a>(例如 <a href="../Hotkeys.htm">热键</a>, <a href="Menu.htm">自定义菜单项</a>或<a href="SetTimer.htm">定时</a>子程序) 都会以此命令的默认设置开始. 通过在脚本的自动执行段(脚本的顶部) 使用此命令可以改变这个默认设置.</p>
<h2>相关</h2>
<p><a href="Send.htm">Send</a>, <a href="SetKeyDelay.htm">SetKeyDelay</a>, <a href="SetMouseDelay.htm">SetMouseDelay</a>, <a href="Click.htm">Click</a>, <a href="MouseClick.htm">MouseClick</a>, <a href="MouseClickDrag.htm">MouseClickDrag</a>, <a href="MouseMove.htm">MouseMove</a></p>
<h2>示例</h2>
<div class="ex" id="ExBasic">
<p><a href="#ExBasic">#1</a></p>
<pre>SendMode Input
SendMode InputThenPlay</pre>
</div>

</body>
</html>